From 1a8e3a7020ba57a3c1d8ab89e1fa3911ae5ac44a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 18 Oct 2004 21:02:37 +0000 Subject: [PATCH] Fix #155658, Sebastian Bacher: 2004-10-18 Matthias Clasen Fix #155658, Sebastian Bacher: * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a new is_leader flag. * gdk/x11/gdkwindow-x11.c (update_wm_hints): Set wm hints on leader windows even if they are withdrawn. (gdk_window_set_group): Mark the new leader window as such. We never remove the flag again, but that should a) be vanishingly rare and b) not a problem, since the flag just turns off an optimization. * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Mark the default leader window as such. --- ChangeLog | 22 ++++++++++++++++++++++ ChangeLog.pre-2-10 | 22 ++++++++++++++++++++++ ChangeLog.pre-2-6 | 22 ++++++++++++++++++++++ ChangeLog.pre-2-8 | 22 ++++++++++++++++++++++ gdk/x11/gdkdisplay-x11.c | 2 ++ gdk/x11/gdkwindow-x11.c | 2 ++ gdk/x11/gdkwindow-x11.h | 2 ++ 7 files changed, 94 insertions(+) diff --git a/ChangeLog b/ChangeLog index da193c8a19..23546de95a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2004-10-18 Matthias Clasen + + Fix #155658, Sebastian Bacher: + + * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a new + is_leader flag. + + * gdk/x11/gdkwindow-x11.c (update_wm_hints): Set wm hints on + leader windows even if they are withdrawn. + (gdk_window_set_group): Mark the new leader window as such. We + never remove the flag again, but that should a) be vanishingly + rare and b) not a problem, since the flag just turns off an + optimization. + + * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Mark the default + leader window as such. + 2004-10-17 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary @@ -11,6 +28,11 @@ * gtk/gtkhsv.c (gtk_hsv_expose): Fix redraw issues with the focus on the ring. +2004-10-15 Matthias Clasen + + * gdk/makegdkalias.pl: Include linux-fb/gdkfb.h when building + the framebuffer backend. (#155486, Olexiy Avramchenko) + 2004-10-15 Matthias Clasen * gtk/gtksizegroup.c (do_size_request): Unset GTK_REQUEST_NEEDED diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index da193c8a19..23546de95a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,20 @@ +2004-10-18 Matthias Clasen + + Fix #155658, Sebastian Bacher: + + * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a new + is_leader flag. + + * gdk/x11/gdkwindow-x11.c (update_wm_hints): Set wm hints on + leader windows even if they are withdrawn. + (gdk_window_set_group): Mark the new leader window as such. We + never remove the flag again, but that should a) be vanishingly + rare and b) not a problem, since the flag just turns off an + optimization. + + * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Mark the default + leader window as such. + 2004-10-17 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary @@ -11,6 +28,11 @@ * gtk/gtkhsv.c (gtk_hsv_expose): Fix redraw issues with the focus on the ring. +2004-10-15 Matthias Clasen + + * gdk/makegdkalias.pl: Include linux-fb/gdkfb.h when building + the framebuffer backend. (#155486, Olexiy Avramchenko) + 2004-10-15 Matthias Clasen * gtk/gtksizegroup.c (do_size_request): Unset GTK_REQUEST_NEEDED diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index da193c8a19..23546de95a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,20 @@ +2004-10-18 Matthias Clasen + + Fix #155658, Sebastian Bacher: + + * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a new + is_leader flag. + + * gdk/x11/gdkwindow-x11.c (update_wm_hints): Set wm hints on + leader windows even if they are withdrawn. + (gdk_window_set_group): Mark the new leader window as such. We + never remove the flag again, but that should a) be vanishingly + rare and b) not a problem, since the flag just turns off an + optimization. + + * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Mark the default + leader window as such. + 2004-10-17 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary @@ -11,6 +28,11 @@ * gtk/gtkhsv.c (gtk_hsv_expose): Fix redraw issues with the focus on the ring. +2004-10-15 Matthias Clasen + + * gdk/makegdkalias.pl: Include linux-fb/gdkfb.h when building + the framebuffer backend. (#155486, Olexiy Avramchenko) + 2004-10-15 Matthias Clasen * gtk/gtksizegroup.c (do_size_request): Unset GTK_REQUEST_NEEDED diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index da193c8a19..23546de95a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,20 @@ +2004-10-18 Matthias Clasen + + Fix #155658, Sebastian Bacher: + + * gdk/x11/gdkwindow-x11.h (struct _GdkToplevelX11): Add a new + is_leader flag. + + * gdk/x11/gdkwindow-x11.c (update_wm_hints): Set wm hints on + leader windows even if they are withdrawn. + (gdk_window_set_group): Mark the new leader window as such. We + never remove the flag again, but that should a) be vanishingly + rare and b) not a problem, since the flag just turns off an + optimization. + + * gdk/x11/gdkdisplay-x11.c (gdk_display_open): Mark the default + leader window as such. + 2004-10-17 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary @@ -11,6 +28,11 @@ * gtk/gtkhsv.c (gtk_hsv_expose): Fix redraw issues with the focus on the ring. +2004-10-15 Matthias Clasen + + * gdk/makegdkalias.pl: Include linux-fb/gdkfb.h when building + the framebuffer backend. (#155486, Olexiy Avramchenko) + 2004-10-15 Matthias Clasen * gtk/gtksizegroup.c (do_size_request): Unset GTK_REQUEST_NEEDED diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 54c80ade91..578864ebf0 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -198,6 +198,8 @@ gdk_display_open (const gchar *display_name) display_x11->leader_gdk_window = gdk_window_new (GDK_SCREEN_X11 (display_x11->default_screen)->root_window, &attr, GDK_WA_X | GDK_WA_Y); + (_gdk_x11_window_get_toplevel (display_x11->leader_gdk_window))->is_leader = TRUE; + display_x11->leader_window = GDK_WINDOW_XID (display_x11->leader_gdk_window); display_x11->leader_window_title_set = FALSE; diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 123073917c..410e000e5b 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -1221,6 +1221,7 @@ update_wm_hints (GdkWindow *window, XWMHints wm_hints; if (!force && + !toplevel->is_leader && private->state & GDK_WINDOW_STATE_WITHDRAWN) return; @@ -4460,6 +4461,7 @@ gdk_window_set_group (GdkWindow *window, if (toplevel->group_leader) g_object_unref (toplevel->group_leader); toplevel->group_leader = g_object_ref (leader); + (_gdk_x11_window_get_toplevel (leader))->is_leader = TRUE; } update_wm_hints (window, FALSE); diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h index b844f6d4b9..608c0172c8 100644 --- a/gdk/x11/gdkwindow-x11.h +++ b/gdk/x11/gdkwindow-x11.h @@ -113,6 +113,8 @@ struct _GdkToplevelX11 guint have_maxhorz : 1; /* _NET_WM_STATE_MAXIMIZED_HORZ */ guint have_fullscreen : 1; /* _NET_WM_STATE_FULLSCREEN */ + guint is_leader : 1; + gulong map_serial; /* Serial of last transition from unmapped */ GdkPixmap *icon_pixmap; -- 2.30.2